package com.lewis.core.base.domain;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 自定义链式响应结构
 *
 * @author Lewis - 2020/11/28 - 17:31
 */
@Data
@ApiModel("通用响应对象")
public class BaseResult {

    @ApiModelProperty(value = "响应业务状态")
    private Integer code;

    @ApiModelProperty(value = "响应消息")
    private String msg;

    @ApiModelProperty(value = "响应中的数据")
    private Object data;

    /**
     * 初始化一个新创建的 BaseResult 对象，使其表示一个空消息。
     */
    public BaseResult() {
    }

    /**
     * 基础成功方法
     *
     * @return BaseResult
     */
    public static BaseResult ok() {
        return new BaseResult().setCode(200).setMsg("ok").setData(null);
    }

    /**
     * 基础失败方法
     *
     * @return BaseResult
     */
    public static BaseResult fail() {
        return new BaseResult().setCode(0).setMsg("fail").setData(null);
    }

    /**
     * 设置code
     *
     * @param code 状态码
     * @return BaseResult
     */
    public BaseResult setCode(Integer code) {
        this.code = code;
        return this;
    }

    /**
     * 设置提示信息
     * @param msg
     * @return
     */
    public BaseResult setMsg(String msg) {
        this.msg = msg;
        return this;
    }

    /**
     * 设置返回数据
     * @param data
     * @return
     */
    public BaseResult setData(Object data) {
        this.data = data;
        return this;
    }
}
